attribute vec4 a_Position;
attribute vec4 a_Color;

varying vec4 v_Color;//A varying is a special type of variable that blends the values given to it and sends these values to the fragment shader. Using the line above as an example, if a_Color was red at vertex 0 and green at vertex 1, then by assigning a_Color to v_Color, we’re telling OpenGL that we want each fragment to receive a blended color. Near vertex 0, the blended color will be mostly red, and as the fragments get closer to vertex 1, the color will start to become green.

uniform mat4 u_Matrix;

void main()
{
    gl_Position = u_Matrix*a_Position;// OpenGL will use the value stored in gl_Position as the final position for the current vertex and start assembling vertices into points, lines, and triangles.
    gl_PointSize=10.0;

    v_Color=a_Color;
}